package presentacion;

import javax.swing.JPanel;
import java.awt.GridBagLayout;
import javax.swing.JScrollPane;
import java.awt.GridBagConstraints;
import javax.swing.JTable;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.table.DefaultTableModel;
import javax.swing.JCheckBox;
import javax.swing.SwingConstants;
import javax.swing.JTextPane;

import negocio.DirectorIncidencia;
import negocio.DirectorNorma;
import negocio.DirectorPresupuesto;
import negocio.DirectorTipoIncidencia;
import negocio.DirectorTipoResolucionIncidencia;
import negocio.TransferDirector;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JSpinner;

public class DirectorPanelIncidenciasConfiguracion extends JPanel implements DirectorPanel {
	private JTable table;
	private JButton btnAceptar;
	private JTextPane textPane;
	
	
	
	

	private JTextField textField;
	private JLabel lblNombre;
	private JLabel lblDescripcin;
	private JButton btnInsertarComoTipo;
	private JComboBox comboBox;
	private JComboBox comboBox_1;
	private JLabel lblCuando;
	private JLabel lblNewLabel;
	private JButton btnNewButton;
	private JButton btnBorrarReglaConvivencia;

	/**
	 * Create the panel.
	 */
	public DirectorPanelIncidenciasConfiguracion() {
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[]{245, 0, 0, 0, 0};
		gridBagLayout.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		setLayout(gridBagLayout);
		
		JScrollPane scrollPane = new JScrollPane();
		GridBagConstraints gbc_scrollPane = new GridBagConstraints();
		gbc_scrollPane.gridheight = 8;
		gbc_scrollPane.insets = new Insets(0, 0, 5, 5);
		gbc_scrollPane.fill = GridBagConstraints.BOTH;
		gbc_scrollPane.gridx = 0;
		gbc_scrollPane.gridy = 0;
		add(scrollPane, gbc_scrollPane);
		
		table = new JTable();
		
		table.setModel(new DefaultTableModel(
			new Object[][] {
				{null, null},
			},
			new String[] {
				"Incidencia", "Resolucion"
			}
		) {
			boolean[] columnEditables = new boolean[] {
				false, false
			};
			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		scrollPane.setViewportView(table);
		
		lblNombre = new JLabel("Nombre:");
		GridBagConstraints gbc_lblNombre = new GridBagConstraints();
		gbc_lblNombre.fill = GridBagConstraints.HORIZONTAL;
		gbc_lblNombre.insets = new Insets(0, 0, 5, 5);
		gbc_lblNombre.gridx = 1;
		gbc_lblNombre.gridy = 1;
		add(lblNombre, gbc_lblNombre);
		
		textField = new JTextField();
		GridBagConstraints gbc_textField = new GridBagConstraints();
		gbc_textField.gridwidth = 2;
		gbc_textField.insets = new Insets(0, 0, 5, 0);
		gbc_textField.fill = GridBagConstraints.HORIZONTAL;
		gbc_textField.gridx = 2;
		gbc_textField.gridy = 1;
		add(textField, gbc_textField);
		textField.setColumns(10);
		
		lblDescripcin = new JLabel("Descripci\u00F3n:");
		GridBagConstraints gbc_lblDescripcin = new GridBagConstraints();
		gbc_lblDescripcin.fill = GridBagConstraints.HORIZONTAL;
		gbc_lblDescripcin.insets = new Insets(0, 0, 5, 5);
		gbc_lblDescripcin.gridx = 1;
		gbc_lblDescripcin.gridy = 2;
		add(lblDescripcin, gbc_lblDescripcin);
		
		textPane = new JTextPane();
		GridBagConstraints gbc_textPane = new GridBagConstraints();
		gbc_textPane.gridwidth = 3;
		gbc_textPane.insets = new Insets(0, 0, 5, 0);
		gbc_textPane.fill = GridBagConstraints.BOTH;
		gbc_textPane.gridx = 1;
		gbc_textPane.gridy = 3;
		add(textPane, gbc_textPane);
		
		btnInsertarComoTipo = new JButton("<html>Insertar como tipo incidencia</html>");
		btnInsertarComoTipo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(textField.getText()!=""){
					TransferDirector datos=new TransferDirector();
					datos.setNuevoTipoIncidencia(new DirectorTipoIncidencia(textField.getText(), textPane.getText(), 0) );
					SingletonControlador.getInstancia().evento(Evento.DIRECTOR_INSERTAR_TIPO_INCIDENCIA, datos);
					actualizar();
				}
			}
		});
		GridBagConstraints gbc_btnInsertarComoTipo = new GridBagConstraints();
		gbc_btnInsertarComoTipo.insets = new Insets(0, 0, 5, 5);
		gbc_btnInsertarComoTipo.gridx = 1;
		gbc_btnInsertarComoTipo.gridy = 4;
		add(btnInsertarComoTipo, gbc_btnInsertarComoTipo);
		
		btnAceptar = new JButton("<html>Insertar como tipo resoluci\u00F3n</html>");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(textField.getText()!=""){
					TransferDirector datos=new TransferDirector();
					datos.setNuevoTipoResolucionIncidencia(new DirectorTipoResolucionIncidencia(textField.getText(), textPane.getText(), 0) );
					SingletonControlador.getInstancia().evento(Evento.DIRECTOR_INSERTAR_TIPO_RESOLUCION_INCIDENCIA, datos);
					actualizar();
				}
			}
		});
		GridBagConstraints gbc_btnAceptar = new GridBagConstraints();
		gbc_btnAceptar.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnAceptar.insets = new Insets(0, 0, 5, 5);
		gbc_btnAceptar.gridx = 2;
		gbc_btnAceptar.gridy = 4;
		add(btnAceptar, gbc_btnAceptar);
		
		lblCuando = new JLabel("Cuando:");
		GridBagConstraints gbc_lblCuando = new GridBagConstraints();
		gbc_lblCuando.insets = new Insets(0, 0, 5, 5);
		gbc_lblCuando.anchor = GridBagConstraints.EAST;
		gbc_lblCuando.gridx = 1;
		gbc_lblCuando.gridy = 6;
		add(lblCuando, gbc_lblCuando);
		
		comboBox = new JComboBox();
		GridBagConstraints gbc_comboBox = new GridBagConstraints();
		gbc_comboBox.gridwidth = 2;
		gbc_comboBox.insets = new Insets(0, 0, 5, 0);
		gbc_comboBox.fill = GridBagConstraints.HORIZONTAL;
		gbc_comboBox.gridx = 2;
		gbc_comboBox.gridy = 6;
		add(comboBox, gbc_comboBox);
		
		lblNewLabel = new JLabel("Resolucion:");
		GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
		gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
		gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
		gbc_lblNewLabel.gridx = 1;
		gbc_lblNewLabel.gridy = 7;
		add(lblNewLabel, gbc_lblNewLabel);
		
		comboBox_1 = new JComboBox();
		GridBagConstraints gbc_comboBox_1 = new GridBagConstraints();
		gbc_comboBox_1.gridwidth = 2;
		gbc_comboBox_1.insets = new Insets(0, 0, 5, 0);
		gbc_comboBox_1.fill = GridBagConstraints.HORIZONTAL;
		gbc_comboBox_1.gridx = 2;
		gbc_comboBox_1.gridy = 7;
		add(comboBox_1, gbc_comboBox_1);
		
		btnNewButton = new JButton("Crear regla convivencia");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(comboBox.getSelectedIndex()!=-1&&comboBox_1.getSelectedIndex()!=-1){
					TransferDirector datos=new TransferDirector();
					datos.setNuevaNorma(new DirectorNorma(0,((DirectorTipoIncidencia)comboBox.getSelectedItem()).getId(), ((DirectorTipoResolucionIncidencia)comboBox_1.getSelectedItem()).getId()) );
					SingletonControlador.getInstancia().evento(Evento.DIRECTOR_INSERTAR_NORMA, datos);
					actualizar();
				}
			}
		});
		
		btnBorrarReglaConvivencia = new JButton("Borrar regla convivencia");
		GridBagConstraints gbc_btnBorrarReglaConvivencia = new GridBagConstraints();
		gbc_btnBorrarReglaConvivencia.insets = new Insets(0, 0, 0, 5);
		gbc_btnBorrarReglaConvivencia.gridx = 0;
		gbc_btnBorrarReglaConvivencia.gridy = 8;
		add(btnBorrarReglaConvivencia, gbc_btnBorrarReglaConvivencia);
		GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
		gbc_btnNewButton.gridwidth = 3;
		gbc_btnNewButton.gridx = 1;
		gbc_btnNewButton.gridy = 8;
		add(btnNewButton, gbc_btnNewButton);
		actualizar();

	}
	
	
	
	
	
	
	public void actualizar(){
		
		TransferDirector datos=new TransferDirector();
		//Actualziar acciones:
		
		SingletonControlador.getInstancia().evento(Evento.DIRECTOR_GET_TIPOS_RESOLUCION_INCIDENCIAS, datos);
		
		comboBox_1.removeAllItems();
		for(Iterator<DirectorTipoResolucionIncidencia> it=datos.getListaTiposResolucionIncidencia().iterator();it.hasNext();){
			comboBox_1.addItem(it.next());
			
		}
		
		datos=new TransferDirector();
		SingletonControlador.getInstancia().evento(Evento.DIRECTOR_GET_TIPOS_INCIDENCIAS, datos);
		
		comboBox.removeAllItems();
		for(Iterator<DirectorTipoIncidencia> it=datos.getListaTiposIncidencia().iterator();it.hasNext();){
			comboBox.addItem(it.next());
			
		}
		
		
		
		
		datos=new TransferDirector();
		SingletonControlador.getInstancia().evento(Evento.DIRECTOR_GET_LISTA_NORMA_CONVIVENCIA, datos);
		
		//Remover datos anteriores.
		while(((DefaultTableModel)table.getModel()).getRowCount()!=0){
			((DefaultTableModel)table.getModel()).removeRow(0);
		}
		
		
		
		

		
		
		for(Iterator<DirectorNorma> it=datos.getListaNormas().iterator();it.hasNext();){
			DirectorNorma dp=it.next();
			String tipo=((DirectorTipoIncidencia)comboBox.getItemAt(dp.getTipoIncidencia()-1)).getNombre();
			String resolucion=((DirectorTipoResolucionIncidencia)comboBox_1.getItemAt(dp.getTipoResolucion()-1)).getNombre();

			
		
				((DefaultTableModel)table.getModel()).addRow(new Object[]{tipo,resolucion});
				
			}
		}
		

		
		
		
		
	}


